用 Git 同步 Hexo 博客文章

2022 年 7 月 26 日 星期二(已编辑)
/ ,
69

用 Git 同步 Hexo 博客文章

最近一直在想,有什么顺手的方式,能让我用 VScode 一把梭写博客,只有这样才会有顺手的感觉,不然太麻烦了就很不想写。想来想去,能不能用 Git 来同步文章呢,比如把服务器的 hexo 文章源文件夹作为远程仓库,查了一下确实是可行的,那就开始搞吧。

本地配置

分两个部分,一个是本地需要配置的,一个是远程服务器需要配置的。

配置 ssh 密钥

首先需要配置一下 ssh 密钥,后面配置远程服务器的时候会用到。

ssh-keygen -t rsa -C "youremail@example.com"

生成的 ssh 密钥会在 C:\Users\yourname\.ssh\ 中,里面的文件至少有这两个:

.ssh
|--id_rsa
|--id_rsa.pub

然后本地暂时就没有什么可以配置的地方了,先去配置远程服务器吧。

克隆远程仓库

当远程空仓库创建以后,就可以通过 git clone 命令克隆了:

git clone git@server:/source/_posts.git

后面的用法和普通的 Git 仓库就是一样的了。

远程服务器配置

安装 Git

sudo apt install git

配置 Git 用户

先创建一个 Git 用户用于后面的登陆或管理。

sudo adduser git

然后配置证书登陆,这里要用到前面创建的公钥,在 C:\Users\yourname\.ssh\ 中找到 id_rsa.pub 文件,将里面的公钥导入到 /home/git/.ssh/authorized_keys 文件里,保持一行一个公钥。

初始化需要的 Git 仓库

选定一个目录作为 Git 仓库,假定是 Hexo 的文章源文件夹 /source/_posts.git,在 /source 目录下输入命令:

sudo git init --bare _posts.git

然后 Git 会创建一个裸仓库,进入裸仓库中 cd _posts.git 找到 hooks文件夹进行以下步骤:

# 创建 post-receive 文件
sudo vim post-receive
# 在文件中输入以下内容
#!/bin/bash
git --work-tree=/source/_posts checkout -f
git --work-tree=/source/_posts clean -fd
# 保存退出后,设置权限
sudo chown git:git post-receive
sudo chmod +x post-receive

通过这样的配置,Git 仓库的内容就和设定的 --work-tree 文件夹进行了连接。

参考文档

  1. 搭建服务器上的 Git 并实现自动同步到站点目录
  2. 搭建 Git 服务器-廖雪峰
  3. Understanding Git Hook - post-receive hook
  4. Git 利用 post-receive 自动化部署

使用社交账号登录

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...